package Controlador;

import gui.Vista;

import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import proxy.ProxyConcreto;
import beans.ItemLista;
import beans.ItemOrdenCompra;
import beans.Lista;
import beans.OrdenCompraProv;
import beans.OrdenPedido;
import beans.Proveedor;
import beans.Rodamiento;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class ControladorArchivo extends Controlador{

	public ControladorArchivo(Vista v)
	{
		((ProxyConcreto) getModelo()).setVista(v);
	}
	
/*
	private List<ItemLista> generaSubLista( List<ItemLista> subLista) {

		
		Rodamiento r = new Rodamiento();
		r.setCodigo("QWA1");
		r.setDescripcion("desc");
		r.setIdRodamiento(12);
		r.setMarca("marca1");
		r.setOrigen("origen1");
		
		
		ItemLista i = new ItemLista();
		i.setCondicionDescuento("condDes");
		i.setIdItem(1);
		i.setPorcentajeGanancia(12);
		i.setPrecio(100);
		i.setRodamiento(r);
		i.setStock(1200);
		subLista.add(i);
		
		return subLista;
	}
*/	
	
	
	
	
	
	public void crearListaProveedores(String nombreArchivo){
		try {
			XStream xstream = new XStream(new DomDriver());
			xstream.alias("Lista", Lista.class);
			xstream.alias("Proveedor", Proveedor.class);
			xstream.alias("Rodamiento", Rodamiento.class);
			xstream.alias("ItemLista", ItemLista.class);
	
			Lista listaProveedor = new Lista(); 
			
			listaProveedor = (Lista)xstream.fromXML(new FileInputStream(nombreArchivo));
			//System.out.println(listaProveedor);
			
			ProxyConcreto p = (ProxyConcreto) getModelo();
			p.crearListaProveedor(listaProveedor);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	
	/*
	 public void crearListaProveedores(String pathArchivo){
		
		XStream xstream = new XStream(new DomDriver());
		xstream.alias("Lista", Lista.class);
		xstream.alias("Proveedor", Proveedor.class);
		xstream.alias("Rodamiento", Rodamiento.class);
		xstream.alias("ItemLista", ItemLista.class);
		
//		XStream xstream = new XStream();
//		xstream.alias("Lista", Lista.class);
//		xstream.alias("Proveedor", Proveedor.class);
//		xstream.alias("Rodamiento", Rodamiento.class);
//		xstream.alias("ItemLista", ItemLista.class);
		
		
		
		Lista l = new Lista();
		Proveedor p = new Proveedor();
		//Rodamiento r = new Rodamiento();
		

		//proveedor
		p.setCondicionCompra("condicion");
		p.setIdProveedor(123);
		p.setRazonSocial("razonZoZial");		
		
		List<ItemLista> subLista = new ArrayList<ItemLista>(); 
		subLista = generaSubLista(subLista);
		
		
		
		//Lista
		l.setActiva(true);
		l.setDescripcion("descripcion");
		l.setFecha(null);
		l.setIdLista(12333);
		l.setItems(subLista);
		l.setListaOferta(true);
		l.setProveedor(p);

		String xml = xstream.toXML(l);
		System.out.println(xml);
		
		Lista listaProveedor = new Lista(); 
		listaProveedor = (Lista)xstream.fromXML(xml);
		
	}
	 * */

	//PUNTO 5 ) Crear orden de compra con los datos de la solicitud de compra enviada de la ofiina de ventas
	public void generarXMLordenesCompra()  {
		
		try {
			// busco las solicitudes de compra del servidor
			ProxyConcreto p = (ProxyConcreto) getModelo();
			List<OrdenCompraProv> OP = p.obtenerOCdeProveedores();
			//System.out.println(OP.toString());
			
			XStream xstream = new XStream(new DomDriver());
			xstream.alias("ItemOrdenCompra", ItemOrdenCompra.class);
			xstream.alias("Proveedor", Proveedor.class);
			xstream.alias("Rodamiento", Rodamiento.class);
			
			String xml = xstream.toXML(OP);
			System.out.println(xml);
			
			
			FileWriter fstream = new FileWriter("C://XMLordenesCompraProveedores.xml");
			
			BufferedWriter out = new BufferedWriter(fstream);
			out.write(xml);
			out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	




	public void crearOC()
	{
		ProxyConcreto p = (ProxyConcreto) getModelo();
		p.importarOC();
	}

	



}